/**
 * @author lilin
 * @date 2016年3月16日 上午10:47:16
 * @annotation
 */
package com.lilin.gps;

import android.app.Application;
import android.content.Context;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
import android.location.Criteria;
import android.location.LocationManager;

import com.pgyersdk.crash.PgyCrashManager;

public class MyApplication extends Application {

	// 获取全局Context
	private static Context context;
	public  static PackageInfo appInfo = null;
	private static LocationManager locationManager;
	// 位置提供器
	private static String provider;
	
	@Override
	public void onCreate() {
		super.onCreate();

		context = getApplicationContext();
		// 获取APP版本
		PackageManager manager = this.getPackageManager();
		try {
			appInfo = manager.getPackageInfo(this.getPackageName(), 0);
		} catch (NameNotFoundException e) {
			e.printStackTrace();
		}
		// 初始化GPS
		initGPS();
		// 蒲公英 注册日志崩溃接口
		PgyCrashManager.register(this);

	}
	// 获取Context
	public static Context getContext() {
		return context;
	}
	// 获取位置提供器
	public static String getGPSProvider() {
		return provider;
	}
	// 获取LocationManager
	public static LocationManager getLocationManager() {
		return locationManager;
	}

	// 初始化LM
	private void initGPS() {
		// 初始化 位置服务类
		locationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
		// 初始化位置提供器:LocationManager.GPS_PROVIDER定位，NETWORK_PROVIDER定位
		// GPS： 高精度 高电耗
		// 网络定位: 低精度 低电耗
		provider = locationManager.getBestProvider(initCriteria(), true); // 根据条件获取满足条件的最佳位置提供器
	}

	// 初始化 精确度参数
	public Criteria initCriteria() {
		Criteria criteria = new Criteria();
		// 位置解析的精度
		// 精确模式 Criteria.ACCURACY_FINE 模糊模式 Criteria.ACCURACY_COARSE
		criteria.setAccuracy(Criteria.ACCURACY_FINE);
		// 是否提供海拔高度信息
		criteria.setAltitudeRequired(true);
		// 是否提供方向信息
		criteria.setBearingRequired(false);
		// 是否提供速度信息
		criteria.setSpeedRequired(false);
		// 是否允许运营商计费
		criteria.setCostAllowed(false);
		// 电池消耗
		// 无 Criteria.NO_REQUIREMENT、低 Criteria.POWER_LOW、中 Criteria.
		// POWER_MEDIUM、高 Criteria.POWER_HIGH
		criteria.setPowerRequirement(Criteria.POWER_LOW);
		return criteria;
	}
	
	
	
}
